package com.cty._04_Optimization._45_SortArrayForMinNumber;

import java.util.Arrays;
import java.util.Comparator;

/**
 * @Auther: cty
 * @Date: 2020/7/18 9:01
 * @Description: 面试题45：把数组排成最小的数
 * 题目：输入一个正整数数组，把数组里所有数字拼接起来排成一个数，打印能拼
 * 接出的所有数字中最小的一个。例如输入数组{3, 32, 321}，则打印出这3个数
 * 字能排成的最小数字321323。
 * @version: 1.0
 */
public class SortArrayForMinNumber {
    private int[] array;
    int length;

    public SortArrayForMinNumber(int[] array, int length){
        this.array = array;
        this.length = length;
    }

    public void printMinNumber(){
        if(array==null || length<=0)
            return;

        String[] strArray = new String[length];
        for(int i=0; i<length; i++)
            strArray[i] = Integer.toString(array[i]);

        Arrays.sort(strArray, ((o1, o2) -> {
            String o1o2 = o1 + o2;
            String o2o1 = o2 + o1;
            return o1o2.compareTo(o2o1);
        }));

        for(int i=0; i<length; i++)
            System.out.print(strArray[i]);
        System.out.println();
    }  // end printMinNumber()

}  // end class
